Skip to content

feat: add EditorConfig, VS Code settings & extension recommendations for consistent DX#748

Open
karanpatill wants to merge 3 commits intoaccordproject:mainfrom
karanpatill:feat/editorconfig-vscode-dx
Open

feat: add EditorConfig, VS Code settings & extension recommendations for consistent DX#748
karanpatill wants to merge 3 commits intoaccordproject:mainfrom
karanpatill:feat/editorconfig-vscode-dx

Conversation

@karanpatill
Copy link

feat(dx): add EditorConfig and VS Code workspace configuration

Closes #628

This PR improves the developer experience by adding shared editor configuration files that ensure consistent formatting and a productive development environment across contributors — without affecting runtime behavior.

Changes

  • .editorconfig — Editor-agnostic formatting rules (2-space indentation, LF line endings, UTF-8 charset) with targeted overrides for Markdown, Makefiles, CI workflows, and minified files.
  • .vscode/extensions.json — Recommends 14 extensions mapped to the project's actual tech stack:
    • Core: EditorConfig, Prettier, ESLint
    • Frameworks: TypeScript Nightly, Tailwind CSS IntelliSense, Styled Components
    • Testing: Playwright, Vitest Explorer
    • Quality-of-Life: Spell Checker, PostCSS, Pretty TS Errors, dotenv
  • .vscode/settings.json — Project-level workspace settings:
    • Format-on-save with Prettier
    • Auto-fix ESLint errors on save
    • Workspace TypeScript SDK resolution
    • Tailwind IntelliSense for TSX files
    • Smart search/file exclusions (node_modules, dist, package-lock.json, playwright-report)
    • Markdown-specific overrides (word wrap, preserve trailing whitespace)
  • .gitignore — Updated to track .vscode/settings.json alongside the already-tracked extensions.json

Flags

  • Developer-experience only change
  • No impact on application logic, build, or runtime behavior
  • All files are non-intrusive and act as guidance for contributors

Why this is needed

Contributors using different editors and personal configurations can introduce inconsistent formatting, whitespace issues, and unnecessary diffs in pull requests. These files provide a shared baseline that:

  1. Reduces formatting noise in PRs
  2. Speeds up onboarding — new contributors get a productive VS Code setup instantly
  3. Aligns with the existing codebase — all rules were derived from the project's actual .eslintrc.cjs, tsconfig.json, and source file conventions

Screenshots or Video

Not applicable (config files only)

Related Issues

Signed-off-by: karanpatill <karanpatil82005@gmail.com>
…ignore to include them.

Signed-off-by: karanpatill <karanpatil82005@gmail.com>
@karanpatill karanpatill requested a review from a team as a code owner February 24, 2026 18:44
@netlify
Copy link

netlify bot commented Feb 24, 2026

Deploy Preview for ap-template-playground ready!

Name Link
🔨 Latest commit 29f8ddb
🔍 Latest deploy log https://app.netlify.com/projects/ap-template-playground/deploys/699f5644a025ce00078c0583
😎 Deploy Preview https://deploy-preview-748--ap-template-playground.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Member

@mttrbrts mttrbrts left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you validate these changes against the setting in https://github.com/accordproject/concerto, we should strive to be consistent where possible?

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR enhances the developer experience by introducing standardized editor configurations and comprehensive architecture documentation. The changes establish a consistent formatting baseline across contributors without affecting runtime behavior or build processes.

Changes:

  • Added .editorconfig with editor-agnostic formatting rules (2-space indentation, LF line endings, UTF-8) and targeted overrides for various file types
  • Added .vscode/settings.json with workspace-level configurations for formatting, TypeScript, Tailwind, and ESLint integration
  • Added .vscode/extensions.json recommending 14 VS Code extensions aligned with the project's tech stack
  • Updated .gitignore to track .vscode/settings.json alongside the existing .vscode/extensions.json
  • Added comprehensive ARCHITECTURE.md documentation explaining the template execution pipeline, state management, and component architecture

Reviewed changes

Copilot reviewed 4 out of 5 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
.editorconfig Defines editor-agnostic formatting rules with 2-space indentation, LF line endings, and file-type-specific overrides
.vscode/settings.json Configures format-on-save, ESLint auto-fix, TypeScript SDK, Tailwind IntelliSense, and search exclusions
.vscode/extensions.json Recommends 14 VS Code extensions covering formatting (EditorConfig, Prettier, ESLint), frameworks (TypeScript, Tailwind, Styled Components), testing (Playwright, Vitest), and QoL tools
.gitignore Updated to track .vscode/settings.json (line 18) for shared workspace settings
ARCHITECTURE.md New 367-line comprehensive guide covering data flow, execution pipeline, state management, component architecture, and key libraries

export const NAME = "Hello World";
export const MODEL = `namespace org.example.helloworld...`; // Concerto .cto
export const TEMPLATE = `Hello {{firstName}} {{lastName}}!`; // TemplateMark
export const DATA = { firstName: "John", lastName: "Doe" }; // JSON
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The documentation shows DATA as a JSON string in the example (line 150), but the actual Sample type definition in src/samples/index.ts specifies DATA as type "object", not string. The example should show DATA as an object literal without quotes, like: DATA = { firstName: "John", lastName: "Doe" }

Copilot uses AI. Check for mistakes.
└── MainContainer.tsx ← Main split-panel workspace
├── [Left PanelGroup — vertical]
│ ├── TemplateModel ← Concerto .cto editor (ConcertoEditor.tsx)
│ │ └── ConcertoEditor.tsx (Monaco editor, language: "cto")
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The documentation states the Monaco editor language is "cto" for the Concerto Model Editor, but the actual implementation in src/editors/ConcertoEditor.tsx uses language="concerto". This should be corrected to match the implementation.

Suggested change
│ │ └── ConcertoEditor.tsx (Monaco editor, language: "cto")
│ │ └── ConcertoEditor.tsx (Monaco editor, language: "concerto")

Copilot uses AI. Check for mistakes.
# ── Source files (JS / TS / JSX / TSX) ──────────────────────────────
[*.{js,jsx,ts,tsx}]
indent_size = 2
max_line_length = 100
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The max_line_length setting is set to 100 for JavaScript/TypeScript files, but there's no existing ESLint or Prettier configuration in the repository that enforces this limit. This could create confusion if the EditorConfig suggests one line length but no other tooling enforces it. Consider either removing this setting or adding a corresponding ESLint rule (e.g., max-len) or Prettier's printWidth configuration.

Suggested change
max_line_length = 100

Copilot uses AI. Check for mistakes.
{
// ── Editor Defaults ────────────────────────────────────────────
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The VS Code settings reference Prettier as the default formatter ("esbenp.prettier-vscode"), but Prettier is not listed as a dev dependency in package.json. Contributors who install the recommended extensions will have the Prettier extension, but the project should include a local Prettier installation to ensure consistent formatting across environments and CI/CD pipelines. Consider adding "prettier" to devDependencies and creating a .prettierrc configuration file to explicitly define formatting rules.

Copilot uses AI. Check for mistakes.
│ │ ├── index.ts # Exports SAMPLES array + Sample type
│ │ ├── playground.ts # Default "playground" sample
│ │ ├── helloworld.ts
│ │ └── ... # (14 more samples)
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment states there are "14 more samples" (line 52), but based on the actual count in src/samples/, there are 17 total sample files including playground.ts and helloworld.ts (which are mentioned on lines 50-51). This should state "15 more samples" to be accurate.

Suggested change
│ │ └── ... # (14 more samples)
│ │ └── ... # (15 more samples)

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feature: add EditorConfig and VS Code recommendations for consistent DX

3 participants